package com.zhangj.linklist;

import com.zhangj.linklist.pojo.Hero;

/**
 * @ClassName MySimpleLinkList
 * @Description
 * @Author zhangjie
 * @Date 2022/1/13 16:32
 * @Version 1.0
 */

public class MySimpleLinkList {

    private Hero headNode = new Hero(0, "", "", null);

    //添加方法,不考虑排名,直接添加到尾部即可
    public void add(Hero hero) {
        Hero temp = headNode;
        for (; ; ) {
            if (temp.getNext() == null) {  //代表是最后一个节点了
                break;
            }
            temp = temp.getNext();
        }
        temp.setNext(hero);
    }

    //删除一个节点
    public void delete(int id) {
        Hero temp = headNode;
        boolean isFlag = false;
        for (; ; ) {
            if (temp.getNext() == null) {  //证明整个链表都没找到
                break;
            }
            if (temp.getNext().getId() == id) {
                isFlag = true;
                // temp = temp.getNext();
                break;
            }
            temp = temp.getNext();
        }
        if (isFlag) {
            temp.setNext(null);
            return;
        }
        System.out.println("没有这个英雄");
    }

    //修改的方法,默认id是不可以修改的
    public void update(Hero hero) {
        Hero temp = headNode;
        boolean isFlag = false;
        for (; ; ) {
            if (temp.getNext() == null) {
                break;
            }
            if (temp.getNext().getId() == hero.getId()) {
                isFlag = true;
                break;
            }
            temp = temp.getNext();
        }
        if (isFlag) {
            temp = temp.getNext();
            temp.setName(hero.getName());
            temp.setNickName(hero.getNickName());
        }else{
            System.out.println("没有这个英雄");
        }
    }

    //查找的方法
    public Hero getHeadNode(int id){
        Hero temp = headNode;
        boolean isFlag = false;
        for (; ; ) {
            if (temp.getNext() == null) {
                break;
            }
            if (temp.getNext().getId() == id) {
                isFlag = true;
                break;
            }
            temp = temp.getNext();
        }
        if (isFlag) {
           return temp.getNext();
        }else{
            System.out.println("没有这个英雄");
            return null;
        }
    }

    //遍历的方法,这里就做打印处理
    public void printAll(){
        Hero temp = headNode;
        while(true){
            if (temp == null) {
                break;
            }
            System.out.println("Hero = " + temp);
            temp = temp.getNext();
        }
    }
}
